Ruby on Rails
Thursday, February 1, 2018
On 2018-Feb-1, at 09:05 , fugee ohu <fugee279@gmail.com> wrote:
On Thursday, February 1, 2018 at 8:54:56 AM UTC-5, Colin Law wrote:On 1 February 2018 at 13:49, fugee ohu <fuge...@gmail.com> wrote:
On Thursday, February 1, 2018 at 3:51:37 AM UTC-5, Colin Law wrote:On 1 February 2018 at 07:30, fugee ohu <fuge...@gmail.com> wrote:I'm having find_or_create_by roll back on me in the console directly from the model I'm not providing an id, the mysql id column is autoincrementModel.find_or_create_by(person_id: 1, picture_id:37) What happens if you try and create a record (where there is not already a matching record) with only those fields?ColinSame thing It works only if I remove all the belongs_to from ModelHave you got any validations on the model?Can you show us the model code where it has the associations and validations?What do you see in the log when you try to do it?Colin--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-ta...@googlegroups.com .
To post to this group, send email to rubyonra...@googlegroups.com .
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/ .aa095ea1-5568-402a-978f- 9c6f794a8eb6%40googlegroups. com class Relationship < ApplicationRecordbelongs_to :picturebelongs_to :personbelongs_to :addressbelongs_to :carend
Does your database have foreign keys set up for these?
Look at the end of your `db/schema.rb` file for lines like:
add_foreign_key "relationships", "pictures"
add_foreign_key "relationships", "people"
add_foreign_key "relationships", "addresses"
add_foreign_key "relationships", "cars"
If you don't have Person:1 or Picture:10, then this Relationship can't be created.
If you are actually trying to make Relationship be "generic", then you might try something like:
class Relationship < ApplicationRecord
belongs_to :person
belongs_to :thing, polymorphic: true
end
(Not that I'm necessarily recommending you do this as I don't know your requirements.)
class Person < ApplicationRecordhas_many :real_estate_transactionshas_many :relationshipshas_many :pictures, through: :relationshipshas_many :addresses, through: :relationshipshas_many :cars, through: :relationshipsattr_accessor :address_idattr_accessor :person_idattr_accessor :car_idattr_accessor :picture_iddef formatted_name"#{last_name}, #{first_name}, #{middle_name}, #{name}"endend
Also, why do you have all those `attr_accessor` for the various _id's? If a Person has many Pictures, then there isn't any _single_ picture_id for a person. ActiveRecord will give you an implicit `picture_ids` based on the `has_many` (though it's not likely that you need that much).
-Rob
class Picture < ApplicationRecordvalidates :name, presence: truehas_many :relationshipshas_many :people, through: :relationshipshas_many :cars, through: :relationshipsmount_uploader :name, PictureUploaderattr_accessor :person_idattr_accessor :car_idattr_accessor :picture_iddef formatted_name"#{name}, #{id}"endendrails c2.3.3 :001 > Relationship.find_or_create_by(person_id: 1, picture_id: 10)Relationship Load (144.3ms) SELECT `relationships`.* FROM `relationships` WHERE `relationships`.`person_id` = 1 AND `relationships`.`picture_id` = 10 LIMIT 1(1.1ms) BEGINPicture Load (27.0ms) SELECT `pictures`.* FROM `pictures` WHERE `pictures`.`id` = 10 LIMIT 1Person Load (5.0ms) SELECT `people`.* FROM `people` WHERE `people`.`id` = 1 LIMIT 1(25.6ms) ROLLBACK=> #<Relationship id: nil, person_id: 1, address_id: nil, real_estate_transaction_id: nil, car_id: nil, event_id: nil, picture_id: 10>2.3.3 :002 >--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/dc85a890-8591-4543-b5de-1fce1662a64e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment