0
我有一個具有以下關聯一個membership
型號:如何獲得這個foreign_key關聯關聯的另一面?
class Membership < ActiveRecord::Base
belongs_to :family_tree
belongs_to :member
belongs_to :inviter, class_name: "User", foreign_key: "user_id"
belongs_to :invited, class_name: "User", foreign_key: "invited_id"
end
這是架構:
# == Schema Information
#
# Table name: memberships
#
# id :integer not null, primary key
# family_tree_id :integer
# user_id :integer
# relation :string(255)
# member_id :integer
# invited_id :integer
#
而且我User
模式,我有以下幾點:
class User < ActiveRecord::Base
has_many :memberships
end
所以我可以成功地爲2個不同的用戶分配1條記錄,例如:
[7] pry(#<RSpec::ExampleGroups::User>)> membership
=> #<Membership id: 90, family_tree_id: 1049, user_id: 779, created_at: "2015-10-29 15:24:02", updated_at: "2015-10-29 15:24:02", relation: "sister", member_id: 108, connection_sent_at: nil, connection_responded_at: nil, connect_send_limit: nil, connect_times_sent: nil, connected: nil, connect_type: nil, request_status: nil, connection_removed_at: nil, invited_id: 777>
[8] pry(#<RSpec::ExampleGroups::User>)> membership.family_tree
=> #<FamilyTree id: nil, name: "Enrico McGlynn", user_id: 777, created_at: "2015-10-29 15:24:02", updated_at: "2015-10-29 15:24:02">
[11] pry(#<RSpec::ExampleGroups::User>)> membership.inviter
=> #<User id: nil, email: "[email protected]", encrypted_password: "$2a$04$Ke.1sQ9mZ2ZP0Hxamg6NS.6zUoEHyolPbKJ1UfAlils...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2015-10-29 15:24:02", updated_at: "2015-10-29 15:24:02", first_name: "Audie", confirmation_token: nil, confirmed_at: "2015-10-29 15:23:57", confirmation_sent_at: nil, unconfirmed_email: nil, invitation_relation: "quibusdam", avatar: nil, invitation_token: nil, invitation_created_at: nil, invitation_sent_at: nil, invitation_accepted_at: nil, invitation_limit: nil, invited_by_id: nil, invited_by_type: nil, invitations_count: 0, bio: "Quibusdam est laborum cupiditate modi et est. Nece...", last_name: "Feil", gender: 1>
[12] pry(#<RSpec::ExampleGroups::User>)> membership.invited
=> #<User id: nil, email: "[email protected]", encrypted_password: "$2a$04$jlFrLS6UlcchaJlsOAv4ne/5nYSxH.7Zdsvk5WZMd1w...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2015-10-29 15:24:02", updated_at: "2015-10-29 15:24:02", first_name: "Annamae", confirmation_token: nil, confirmed_at: "2015-10-29 15:23:57", confirmation_sent_at: nil, unconfirmed_email: nil, invitation_relation: "eveniet", avatar: nil, invitation_token: nil, invitation_created_at: nil, invitation_sent_at: nil, invitation_accepted_at: nil, invitation_limit: nil, invited_by_id: nil, invited_by_type: nil, invitations_count: 0, bio: "Ut explicabo omnis facilis et. Dolor sunt enim et....", last_name: "Kshlerin", gender: 1>
我遇到的問題是當我嘗試去其他方式時,即從該用戶記錄中查找與其關聯的所有memberships
。它返回一個空數組。
[1] pry(#<RSpec::ExampleGroups::User>)> u1
=> #<User id: nil, email: "[email protected]", encrypted_password: "$2a$04$jlFrLS6UlcchaJlsOAv4ne/5nYSxH.7Zdsvk5WZMd1w...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2015-10-29 15:24:02", updated_at: "2015-10-29 15:24:02", first_name: "Annamae", confirmation_token: nil, confirmed_at: "2015-10-29 15:23:57", confirmation_sent_at: nil, unconfirmed_email: nil, invitation_relation: "eveniet", avatar: nil, invitation_token: nil, invitation_created_at: nil, invitation_sent_at: nil, invitation_accepted_at: nil, invitation_limit: nil, invited_by_id: nil, invited_by_type: nil, invitations_count: 0, bio: "Ut explicabo omnis facilis et. Dolor sunt enim et....", last_name: "Kshlerin", gender: 1>
[9] pry(#<RSpec::ExampleGroups::User>)> u1.memberships
=> []
如何獲得user.memberships
返回與user_id and invited_id
在memberships
模型相關的成員?
這是有道理的。我猜的一個問題是,在我接觸到其他人之前...... y確實'has_many:memberships'不會返回任何記錄,儘管有'user_id'記錄。 – marcamillion
我注意到的一件事是返回的每個用戶記錄的'user.id'都是'nil'。這可能會導致這個問題?如果是這樣,我該如何解決它? – marcamillion
呀'pry'表明'u1.id'是'nil' – AbM