use*_*ils 53 ruby-on-rails associations ruby-on-rails-4
我在工作和公司之间有一对多的关联,并且工作正常.在作业表单视图中,我有一个带有自动完成功能的公司名称的text_field.自动完成工作正常,但如果我在自动完成列表中放置了一个公司名称,则find_or_create_by不会创建新公司.
def company_name
company.try(:name)
end
def company_name=(name)
@company = Company.find_or_create_by(name: name)
end
Run Code Online (Sandbox Code Playgroud)
ero*_*sko 111
请看一下这个答案.
过去是什么
@company = Company.find_or_create_by_name(name)
Run Code Online (Sandbox Code Playgroud)
在Rails 4现在
@company = Company.find_or_create_by(name: name)
Run Code Online (Sandbox Code Playgroud)
在Rails 4中执行此操作的另一种方法是:
@company = Company.where(name: name).first_or_create
Run Code Online (Sandbox Code Playgroud)
Kal*_*are 24
Company.find_or_create_by(name: name)
Run Code Online (Sandbox Code Playgroud)
它应该开箱即用.只有可以阻止它创建记录的是验证错误.
试试这个rails console以检查它是否正常工作.并检查验证错误.
name = "YOUR TEXT FOR NAME ATTRIBUTE"
c = Company.find_or_create_by(name: name)
puts c.errors.full_messages
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34013 次 |
| 最近记录: |