0

次のアクティブレコードモデルと1対1の関連付けがあります(例)。

User <-1-1-> employee <-1-1-> contact <-1-1-> 
permanentAddress contact <-1-1-> communicationAddress    

ActiveRecordを使用してクエリが発生した場合:

User Load (1.1ms)  SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1  [["id", "49"]]
  Employeedetail Load (1.8ms)  SELECT "employeedetails".* FROM "employeedetails" WHERE "employeedetails"."User_id" = 49 LIMIT 1
  Contactdetail Load (0.6ms)  SELECT "contactdetails".* FROM "contactdetails" WHERE "contactdetails"."employeedetail_id" = 40 LIMIT 1
  Address Load (1.1ms)  SELECT "addresses".* FROM "addresses" WHERE "addresses"."contactdetail_id" = 52 LIMIT 1
  CACHE (0.0ms)  SELECT "addresses".* FROM "addresses" WHERE "addresses"."contactdetail_id" = 52 LIMIT 1

LIMIT質問:住所テーブルのを2に増やす方法[inner association]

4

2 に答える 2

1

デフォルトでは、user.employer を書き込むときに起動される SQL には LIMIT 1 制約が設定されているため、この has_one と belongs_to のケースで制限をオーバーライドする方法はないと思います...連絡先に 2 つのアドレスが必要な場合次に、関係を has_one から has_many に変更し、検証を使用して 2 の制限を適用する必要があります...

于 2012-11-05T07:58:44.703 に答える
0

使用できますlimit

Address.limit(2).where("contactdetail_id = ?", 52)

したがって、contactdetail_id = 52 の最初の 2 つの Address が返されます。 詳細はLimit と Offsetを参照してください。

于 2012-11-05T07:12:14.853 に答える