Rails Как передать параметры из контроллера в after_save внутри модели - PullRequest
4 голосов
/ 18 января 2011

У меня есть Rfq-контроллер, я создаю новые или обновляю существующие Rfq, когда я создаю или обновляю объект, сохраняется, что я хочу, так как у меня есть количество параметров кавычек, я хочу обновить таблицу line_items с кавычками в параметрах [: quotes] в столбце quote_price после сохранения Rfqs

Я знаю, что это сбивает с толку, но у кого-то, должно быть, есть подсказка, которую я хочу спросить.

Ответы [ 3 ]

12 голосов
/ 18 января 2011

Если вы пытаетесь использовать хеш params в своей модели, вы нарушаете принципы MVC.Модель должна стоять наедине с аргументами.Если вы пытаетесь сделать следующее:

# controller
Model.foo

# model
def foo
  params[:bar].reverse!
end

Вместо этого вы должны сделать следующее:

# controller
Model.foo(params[:bar])

# model
def foo(foobar)
  foobar.reverse!
end
2 голосов
/ 18 января 2011

Честно говоря, если он имеет дело с params, вероятно, будет хорошей идеей поместить такую ​​логику в контроллер, чтобы не запутать обязанности модели и контроллера.

То есть в контроллер :

if @foo.save
  # Update line_items using params[:quotes]
end
1 голос
/ 18 января 2011

Я думаю, вы хотите иметь 1 форму, которая сохраняет как основной объект, так и все дочерние объекты. Если нет, не обращайте внимания.

В рельсах это называется "nested_attributes"

Вы добавите это к своей модели:

accepts_nested_attributes_for :quotes
# assuming you have 
has_many :quotes

и затем в виде формы:

<% form.fields_for :quotes do |child_form| %>
  <%= child_form.text_field :name %>
<% end %>

Проверьте это в блоге Райана: Вложенные атрибуты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...