У меня есть то, что я полагаю, должна быть общая ситуация, но, возможно, не может найти способ выражения вопрос, чтобы получить решение ...Самый простой способ редактирования ассоциации в Rails
У меня есть несколько связанных модели в моей заявке:
class Product < ActiveRecord::Base
validates_uniqueness_of :prod_code
end
class Stock < ActiveRecord::Base
belongs_to :product
end
Фактически, существует ряд других моделей, которые также относятся к Продукту. По умолчанию в записи запаса я вижу поле product_id, которое является автоматически увеличивающимся числом, которое не очень помогает пользователю. Продукты имеют уникальный prod_code
, который находится на штрих-кодах и т. Д., И является естественным ключом базы данных продукта.
Что бы я хотел, для создания/редактирования экранов для акций и других связанных моделей, чтобы показать текстовое поле для prod_code и иметь возможность реагировать на параметры в форме stock[prod_code]
разумным способом (например, смотреть (например, Stock.new(params[:stock])
)
Чтобы уточнить, установочный ресурс [prod_code] ничего не изменит в базе данных продукта, вместо этого он заменит product_id для соответствующая запись запаса, то есть привязка записи запаса к другой записи продукта.
В настоящее время у меня есть различные методы, определенные в s tock, например prod_code=
, которые делают эту работу. Но, как я уже упоминал, на самом деле есть несколько моделей, которые относятся к моей таблице продуктов. Есть ли способ определить что-то внутри модели продукта?
например. что-то вроде метода referenced_by, который расскажет всем связанным моделям об аргументе prod_code
, просмотрев его в таблице продуктов?
class Product < ActiveRecord::Base
validates_uniqueness_of :prod_code
referenced_by :prod_code
end
Я не уверен, что вы делаете с вложенным кодом продукта; он представлен в виде текстового поля - означает ли это, что он введен вручную? Во всяком случае, accepts_nested_attributes, я думаю, это то, что вы ищете, хотя я думаю, что вам нужно будет установить отношения has_one из Stock to Product http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html – mark
Мне кажется, что вложенные атрибуты, например, редактирование базы данных кода продукта с экранов акций. Это не то, что я хочу сделать - я просто хочу разрешить пользователю вводить новый код продукта на экране редактирования акций. – asc99c
Идея состояла бы в том, чтобы я мог зайти в вид на леса и, например, в _form.html.erb, измените: product_id на: prod_code, и все будет работать. На экране редактирования будет отображаться текущий код продукта, пользователь может ввести новый. – asc99c