【问题标题】:Rails query user first name on join modelRails 在连接模型上查询用户名
【发布时间】:2017-06-04 19:02:23
【问题描述】:

在连接模型上找到用户的这种情况似乎比平时更棘手

 class ConversationParticipant < ActiveRecord::Base
      belongs_to :user
      belongs_to :conversation
      attr_accessible :user_id
    end



   class User < ActiveRecord::Base
      has_many :conversation_participants

  end

我正在尝试使用此查询查找名称为 fisrt_name 的会话参与者

 user = User.where('conversation_participant like ? or first_name like ?', query, query)

但查询也没有返回 user_participant 和 user first_name。

有人可以给点提示!

【问题讨论】:

    标签: mysql ruby-on-rails ruby postgresql ruby-on-rails-3


    【解决方案1】:

    您必须为 sql LIKE 运算符包含 %

    query = params[:query] # or something ...
    User.where('conversation_participant LIKE :query OR first_name LIKE :query', query: "%#{query}%")
    

    【讨论】:

    • 但显示:User.where('conversation_participant LIKE :query OR first_name LIKE :query', query: "%#{query}%") 用户负载 (14.0ms) SELECT "users".* FROM "users" WHERE (conversation_participant LIKE '%%' OR first_name LIKE '%%') ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: conversation_participant: SELECT "users".* FROM "users" WHERE (conversation_participant LIKE '%%' OR first_name LIKE '%%') 所以我必须包括 %?
    • 嗯,你的表里有conversation_participant这样的列吗?
    • 是的,conversation_participants。我把s。等一下,我会检查的
    • 日志显示:SELECT "users".* FROM "users" WHERE (conversation_participant LIKE '%%' OR first_name LIKE '%%') NoMethodError (undefined method id' for #&lt;User::FriendlyIdActiveRecordRelation:0x007fe507db8e38&gt;): app/controllers/conversations_controller.rb:69:in block in create' app/controllers/conversations_controller.rb:49:in `create'
    • wtf id 与 find with first_name 有关系!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 2018-08-17
    • 1970-01-01
    相关资源
    最近更新 更多