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没有帮助。