Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 活动记录关系的关联方法_Ruby On Rails - Fatal编程技术网

Ruby on rails 活动记录关系的关联方法

Ruby on rails 活动记录关系的关联方法,ruby-on-rails,Ruby On Rails,当我找到这样的联系人时 c = Contact.where(:user_id => 37) 我无法利用联系人与Province.rb模型的关联,因为c.Province将产生无方法错误 Contact Load (0.2ms) SELECT "contacts".* FROM "contacts" WHERE "contacts"."user_id" = 37 => [#<Contact id: 13, firm: "aldjflkads", address: "55 S

当我找到这样的联系人时

c = Contact.where(:user_id => 37)
我无法利用联系人与Province.rb模型的关联,因为
c.Province
将产生无方法错误

 Contact Load (0.2ms)  SELECT "contacts".* FROM "contacts" WHERE "contacts"."user_id" = 37
=> [#<Contact id: 13, firm: "aldjflkads", address: "55 SO Avenue", city: "Toronto", postalcode: "M3A B2B", mobile: "999 999 999", office: "", user_id: 37, created_at: "2013-05-02 18:52:01", updated_at: "2013-05-02 18:52:01", province_id: 6>]
>> c.province
NoMethodError: undefined method `province' for #<ActiveRecord::Relation:0x007fbe94bd9cf0>
然后我可以打电话给
c.province
c.province.name

 Contact Load (0.3ms)  SELECT "contacts".* FROM "contacts" WHERE "contacts"."user_id" = 37 LIMIT 1
=> #<Contact id: 13, firm: "aldjflkads", address: "55 aldjfla;skfj", city: "Toronto", postalcode: "M4G B2B", mobile: "999 999 999", office: "", user_id: 37, created_at: "2013-05-02 18:52:01", updated_at: "2013-05-02 18:52:01", province_id: 6>
>> c.province
  Province Load (0.2ms)  SELECT "provinces".* FROM "provinces" WHERE "provinces"."id" = 6 LIMIT 1
=> #<Province id: 6, name: "Ontario", created_at: "2013-04-19 02:37:11", updated_at: "2013-04-19 02:37:11">
>> c.province.name
=> "Ontario"
更新

My Contact.rb模型属于以下省份:但是,还有其他数据(地址、邮政编码等)是联系人模型固有的。因此,如果我这样做(如第一个答案中所建议的),它只允许我访问该省,而不允许我访问我需要的任何其他详细信息

@contactdetails = Contact.where({:user_id => @user.id}).first.province
c=联系人。其中(:user_id=>37)。第一个省


where()返回一个集合。。而find_by_id假定一个唯一的结果,并且只返回一个

,谢谢您的回答。然而,考虑到我的联系人模型是如何工作的,这给我带来了一点问题。我想知道你是否可以在我的OP中查看更新并提出建议。也许我应该只做Contact.find\u by\u user\u id,这样我就可以得到一个独特的结果
Contact.where(:user_id => 37)
@contactdetails = Contact.where({:user_id => @user.id}).first.province