我已经为此工作了一段时间,我似乎无法找到哪里有错误。
我有一个用户模型(:名称,:密码,:电子邮件),事件模型(:名称,:等)和兴趣模型(:名称)[>所有单数<]
然后我创建了两个连接表 -> UsersInterests 和 EventsInterests;每个不包含主键,仅分别由 user_id/interest_id 和 event_id/interest_id 组成。[>复数<]
我的模型包含 HABTM 关系如下
user.rb => has_and_belongs_to_many :interests
event.rb => has_and_belongs_to_many :interests
interest.rb => has_and_belongs_to_many :users
has_and_belongs_to_many :events
events_interests.rb => has_and_belongs_to_many :interests
has_and_belongs_to_many :events
users_interests.rb => has_and_belongs_to_many :users
has_and_belongs_to_many :interests
Whew..ok 所以我想创建一个 named_scope 来查找与特定用户有共同兴趣的所有事件。这是有人帮助我的一些代码。
named_scope :shares_interest_with_user, lambda {|user| { :joins => "LEFT JOIN
events_interests ei ON ei.event_id = Event.id " +
"LEFT JOIN users_interests ui ON ui.interest_id = ei.interest_id",
:conditions => ["ui.user_id = ?", user] }}
当我从控制器运行时 =>
@user = User.find(1)
@events = Event.shares_interest_with_user(@user)
我收到 SQL 错误:“没有这样的列:Event.id: SELECT "events".* FROM "events" LEFT JOIN events_interests ei ON ei.event_id =......."
现在我确定事件模型有一个 id 并且我认为我的所有列名都是正确的..任何人都可以看到缺少什么吗?