Rails 3 - 按名称而不是ID查找

rmp*_*rmp 6 ruby-on-rails ruby-on-rails-3

我正在尝试学习RoR,构建我的第一个应用程序,一个基本的库存应用程序.我试过四处搜索但找不到正确的语法,所以我想我会问.

这是我的设置:

模型

class Item < ActiveRecord::Base
belongs_to :supplier

class Supplier < ActiveRecord::Base
has_many :items
Run Code Online (Sandbox Code Playgroud)

物品控制器

@items = Item.find_all_by_supplier_id '1'
Run Code Online (Sandbox Code Playgroud)

这将返回我想要的数据,但我希望将供应商名称输入到控制器中,这样如果ID不匹配,它仍然可以正常工作.

希望足够的信息,谢谢!

Gaz*_*ler 18

你可以反转你的方法位并尝试:

@items = Supplier.find_by_name('THE NAME').items
Run Code Online (Sandbox Code Playgroud)

Rails创建用于搜索的动态find_by_*和find_all_by_*方法.而不是通过supplier_id检索项目,我建议您让rails使用您在上面的代码段中设置的关联为您执行此操作.在内部,这仍然使用supplier_id,但rails正在处理该过程而不是您.

这也是可能的,所以如果你有一个项目并想要供应商,你可以这样做:

Item.find(1).supplier
Run Code Online (Sandbox Code Playgroud)