我有两个模型,User
和Discussion
用户模型
has_and_belongs_to_many :subscribed_discussions, :class_name => 'Discussion', :join_table => 'discussions_subscriptions'
has_many :discussions
讨论模式
has_and_belongs_to_many :subscribed_users, :class_name => 'User', :join_table => 'discussions_subscriptions'
belongs_to :user
当我访问用户u.subscribed_discussions[0].user_id
的讨论时,我得到的user
值与我直接从Discussion.find
system :029 > u.subscribed_discussions.first == Discussion.find(10)
=> true
system :030 > Discussion.find(10)
=> #<Discussion id: 10, title: "MBA", content: "What do you think about management education, speci...", user_id: 7, created_at: "2011-01-24 21:44:22", updated_at: "2011-01-24 21:44:22", group_id: nil, profile_id: 8>
system :031 > u.subscribed_discussions.first
=> #<Discussion id: 10, title: "MBA", content: "What do you think about management education, speci...", user_id: 1, created_at: "2011-01-24 21:44:22", updated_at: "2011-01-24 21:44:22", group_id: nil, profile_id: 8>
system :032 > u.id
=> 1
system :034 > Discussion.find(10).user_id
=> 7
u
是订阅参与ID = 10的讨论的用户。当我通过subscribed_discussions关系访问讨论并访问其用户时,我得到u
,而不是该讨论的创建者。
答案 0 :(得分:0)
我假设你的Discussion
模型belongs_to :user
,这意味着讨论模型上的user_id
字段将是该用户,它与has_and_belongs_to_many :subscribed_users
关联无关。< / p>
您可以发布模型和schema.rb吗?这将使您更容易理解您的模型正在做什么。
此外,我建议远离HABTM并使用has_many :through
代替,它会为您提供更丰富的模型。
答案 1 :(得分:0)
我在IRC上证实了这是Rails 3中HABTM关系中的一个错误,如果其中一个表和连接表都有一个同名的列。