私は has_one 関連付けを持っています:
has_one 関連付けユーザー -> 顧客モデル
ユーザーは customer_id を持ちますか、それとも顧客は user_id 属性を持ちますか?
他の質問: 私の _form に、顧客に関連付けられていないすべてのユーザーの選択/オプションを入れたいのですが、それを行うための最良の方法はどれですか?
どうもありがとう。
私は has_one 関連付けを持っています:
has_one 関連付けユーザー -> 顧客モデル
ユーザーは customer_id を持ちますか、それとも顧客は user_id 属性を持ちますか?
他の質問: 私の _form に、顧客に関連付けられていないすべてのユーザーの選択/オプションを入れたいのですが、それを行うための最良の方法はどれですか?
どうもありがとう。
_id フィールドは常に属しているモデルにあり、他のテーブル名を参照します。
class Customer < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_one :customer
end
この場合、customers テーブルには user_id フィールドがあります。
2 番目の質問では、SQL で外部結合を使用して欠損値が見つかりました。あなたが望むSQLは
select
from users
left outer join customers on users.id = customers.user_id
where customers.id is null
ActiveRecord で、User クラスにスコープを追加します。
Rails 3.x の場合:
class User < ActiveRecord::Base
has_one :customer
scope :missing_customer,
includes(:customer).where("customers.id is null")
end
Rails 2.3.x の場合:
class User < ActiveRecord::Base
named_scope :missing_customer,
{ :joins => "left outer join customers on users.id = customers.user_id",
:conditions => "customers.id is null" }
end