Rails 4 find or create by method doesn't work

后端 未结 3 875
逝去的感伤
逝去的感伤 2021-01-31 14:03

I have a one to many association between jobs and companies and it works fine. In the job form view I have text_field for the company name with an autocomplete feature. The auto

相关标签:
3条回答
  • 2021-01-31 14:31

    This method is deprecated in rails 4.

    Rails4 release message:

    Deprecated the old-style hash based finder API. This means that methods which previously accepted "finder options" no longer do.

    It is deprecated method, but it should work. Maybe, Rails is not supporting it now.

    You can get more info click here and check 11.2 Deprecations.

    0 讨论(0)
  • 2021-01-31 14:44

    Please take a look at this answer.

    What used to be

    @company = Company.find_or_create_by_name(name)
    

    in Rails 4 is now

    @company = Company.find_or_create_by(name: name)
    

    Another way to do this in Rails 4 would be:

    @company = Company.where(name: name).first_or_create
    
    0 讨论(0)
  • 2021-01-31 14:55
    Company.find_or_create_by(name: name)
    

    It should work out of the box. Only thing that can prevent it from creating record is validation errors.

    Try this in rails console to check if its working or not. And check the validation errors as well.

    name = "YOUR TEXT FOR NAME ATTRIBUTE"
    c = Company.find_or_create_by(name: name)
    puts c.errors.full_messages
    
    0 讨论(0)
提交回复
热议问题