Я кратко объясню свою ситуацию: у меня есть модель под названием «налог», которая принадлежит «пользователю», а «пользователь» has_one.Сохраните идентификатор модели как внешний ключ через has_one/принадлежит_to
В моей таблице users у меня есть столбец с именем «tax_id», который я хочу сохранить идентификатор налоговой модели, когда пользователь ее создает.
В настоящее время в моей налоговой модели функция создания выглядит примерно так:
class Tax < ActiveRecord:Base
belongs_to :user
tax = Tax.new(income: income, taxes: taxes, rrsp: rrsp)
tax.save
, а затем в файле taxes_controller, то создать функция выглядит следующим образом:
def create
@tax = Tax.new(secure_params)
@tax.user = User.find(current_user.id)
if @tax.save
redirect_to show_tax_path(current_user.tax)
else
render :new
end
end
(secure_params) является сильные параметры для полевых входов, заданные в частном определении.
Теперь, кто-то сказал, что мне может быть повезло, если я использую build
, но, к сожалению, я не мог заставить его работать вообще, что-то делать с тем, как я использую current_user
(devise). В настоящее время моя настройка работает очень хорошо, кроме сохранения идентификатора налоговой модели в столбце модели пользователя tax_id, как я уже сказал.
Мне интересно, нужно ли мне добавить ключ внешнего ключа в оператор belongs_to или has_one, даже если у меня сложилось впечатление, что «ссылка» должна быть сделана автоматически, если столбец был назван "[model]_id"
поскольку налог belongs_to пользователя, почему вы добавили атрибут TAX_ID в таблице пользователей. Вместо этого вы должны добавить атрибут user_id в таблицу налогов –
@arivarasan У меня есть user_id в таблице налогов, но мне нужна двусторонняя связь, так что tax_id также сохраняется в таблице пользователей –