Объекты объединения Ruby on Rails - PullRequest
0 голосов
/ 16 февраля 2019

Я новичок в Ruby on Rails, поэтому, пожалуйста, извините, если вопрос звучит глупо или является дубликатом вопроса, но я искал ответ, но безуспешно.

У меня есть следующий пример

Пользовательский класс

class User < ApplicationRecord
    has_many :preference, dependent: :destroy
end

Класс предпочтений

class Preference < ApplicationRecord
    belongs_to :user
end

Итак, я пытаюсь создать новое предпочтение со следующим кодом

preference = PreferenceService.validate_start_and_end_date(Preference.new(preference_params))

Затем я хотел бы сохранить, как следует

current_user.preference.save(preference)

Я пробовал несколько подходов, но безуспешно.Я использую ruby ​​2.5.3p105 с Rails 5.2.1.1

Спасибо

1 Ответ

0 голосов
/ 16 февраля 2019

вот некоторые идеи с вашим кодом выше

, так как вы используете has_many, вы должны следовать соглашению с предпочтениями (форма множественного числа)

class User < ApplicationRecord
  has_many :preferences, dependent: :destroy
end

Класс предпочтений

class Preference < ApplicationRecord
    belongs_to :user
    validate :valid_start_and_end_date?

private

  def valid_start_and_end_date?
    # here you do rule validation for start_date and end_date field
    # for example you check end_date value must greater than or equal start_date
    start_date <= end_date
  end
end

создать предпочтение с помощью этих шагов

since each preference must have a user then first you must 
@preference = Preference.new(preference_params)
@user = User.find_by_username("johndoe")
@preference.user = @user
@preference.save
...