如何使用以下模型加入对象?
User has_many messages Message belongs_to user Thread has_many messages
我正在尝试获取属于用户X的所有主题。我想加入message.user_id = user.user_id
和thread.message_id = message.message_id
。我可以使用find_by_sql
执行此操作,但我正在尝试避免这种情况。
由于
答案 0 :(得分:2)
假设您的Message
模型也belongs_to :thread
,那么您应该能够在has_many :threads, :through => :messages
模型中添加User
。然后你可以user.threads
来获取所有相关的线程。
答案 1 :(得分:0)
以下内容应该有效:(请注意,我添加了您遗失的message belongs_to :thread
)
class User < ActiveRecord::Base
has_many :messages
has_many :threads, :through => :messages
end
class Message < ActiveRecord::Base
belongs_to :user
belongs_to :thread
end
class Thread < ActiveRecord::Base
has_many :messages
has_many :users, :through => :messages
end
这应该允许您执行my_user.threads
和my_thread.users
。
您可以在Rails Guides和API上详细了解has_many :through
。