How avoid concurrency belongs_to and has_many association?

How do I avoid concurrency and keep the data integrity if one user
submit a
form before the other?

My issue is that the last user to submit the person/_form.rb will get
all
chosen cards, same the cards that first user chose and I want to
prohibit
that.

# person.rb
class Person < ActiveRecord::Base
  has_many :cards
end

# card.rb
class Card < ActiveRecord::Base
  belongs_to :person
  scope :not_assigned_to_a_person, -> { Card.where(person_id: nil) }
end

# create_cards.rb
create_table :cards do |column|
  column.references :person, index: true
end

# person/_form.rb
= f.input :card_ids,
    collection: Card.not_assigned_to_a_person,
    label_method: :name, value_method: :id,
    input_html: { multiple: true }

StackOverflow:
http://stackoverflow.com/questions/25216219/how-do-i-avoid-concurrency-belongs-to-and-has-many-association

Ricardo do Valle

On Aug 9, 2014, at 3:22 AM, Ricardo do Valle wrote:

:cards

label_method: :name, value_method: :id
,

input_html: { multiple: true
}

StackOverflow:
http://stackoverflow.com/questions/25216219/how-do-i-avoid-concurrency-belongs-to-and-has-many-association

Have a look back into the mists of time. This may still be useful.

Walter

Hi Walter,

I think that is not the case lock_version because my problem already
exists
on creation of two different Person which must includeCards (has_many)
for
these Person. My problem is: shouldn’t include Cards that have been
associated.

I am not certainly, but I think the only way it is creating index or
constrains on database tables.

Thanks,

On Sat, Aug 9, 2014 at 9:58 AM, Walter Lee D. [email protected]
wrote:

# person.rb

:not_assigned_to_a_person, → { Card.where(person_id: nil
|column|
= f.input
}

To view this discussion on the web visit
To view this discussion on the web visit

https://groups.google.com/d/msgid/rubyonrails-talk/E71DD1FE-9904-4BF6-82FB-BE4D58047AA6%40wdstudio.com

.
For more options, visit https://groups.google.com/d/optout.


Ricardo do Valle