Ruby on rails 从has\u和\u属于\u-many关系返回的对象不正确

Ruby on rails 从has\u和\u属于\u-many关系返回的对象不正确,ruby-on-rails,has-and-belongs-to-many,Ruby On Rails,Has And Belongs To Many,我有两个模型,用户和讨论 用户模型 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_ta

我有两个模型,
用户
讨论

用户模型

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\u discussions[0]。用户id
,我得到的
user
值与直接从讨论访问用户时的值完全不同。查找

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 
system:029>u.subscribed\u discussions.first==Discussion.find(10)
=>正确
系统:030>讨论。查找(10)
=> # 
系统:031>u.u.first
=> # 
系统:032>u.id
=> 1 
系统:034>讨论.查找(10).用户id
=> 7 

u
是以id=10订阅讨论的用户。当我通过订阅的讨论关系访问讨论并访问其用户时,我将返回
u
,而不是该讨论的创建者。

我假设您的
讨论
模型
属于:user
,这意味着讨论模型上的
用户id
字段将是该用户,它与
has\u和\u属于\u many:subscribed\u用户
关联无关

你能发布你的模型和schema.rb吗?这将使您更容易理解您的模型在做什么


另外,我建议远离HABTM,改用
has\u many:通过
,它会给你一个更丰富的模型。

我在IRC上确认这是Rails 3中HABTM关系中的一个缺陷,如果表和联接表中的一个都有同名的列。

我猜您错过了我上面发布的模型的两行。我更新了这个问题,做了进一步的澄清。如果你还想要一堆schema.rb,让我知道。哦,我现在明白了,这很奇怪。您使用的是什么rails版本?你是怎么创造记录的?我在3.0.3上。我很快会尝试切换到3.0.5。我正在做一些类似于
u.u讨论的事情。不幸的是,更新到3.0.5没有帮助。