oi,
robię baze danych do zbierania wyników pomiarów na róznych materiałach.
w bazie mam modele:
Sample,
Parameter,
ParameterValue (nie wiem czy konieczne),
relacja:
Sample has and belongs to many Parameters,
Parameter has one ParameterValue,
przeszkoda dla mnie jest to ze chcialbym aby w formularzu probki zawsze znajdowala sie okreslona póla parametrów, które są prawdziwe dla każdej próbki i tylko pole na wartość, a do tego dodatkowo możliwość rozszerzenia o parametry dodatkowe (np. za pomoca nested_form ?). jak powininem to zrobic?
dalej nie poradziłem sobie z problemem, więc może rozjaśnie:
mam próbki, majace opis i nazwe,
każda z próbek ma określoną ilość parametrów np. grubość podłoża, rodzaj podłoża itp.,
niektóre z parametrów obowiązują dla każdej próbki, niektóre nie,
kazdy parametr dla danej probki, ma jedna wartość
class Parameter < ActiveRecord::Base
has_many :parameter_values
has_many :parametrizes
has_many :samples, through: :parametrize
accepts_nested_attributes_for :parameter_values
end
class Parametrize < ActiveRecord::Base
belongs_to :sample
belongs_to :parameter
end
class ParameterValue < ActiveRecord::Base
belongs_to :parameter
end[/code]
Parametry tworze za pomoca nested_form,
nie wiem jednak jak zakodować następującą rzecz:
parametry podstawowe wyświetlają się w formie dla nowej probki, jest tam tez link aby dodac nowe parametry (nested form)
parametry podstawowe oznaczam booleanem
kontroler:
def new
@sample = Sample.new
@primary_params = Parameter.where(primary: true)
@primary_params.each do |primary|
@sample.parameters << primary
primary.parameter_values.build
end
end
jednak przy takim rozwiązaniu dodawane parametry dodaja sie ze swoja wartością z innej próbki,
chciałbym, żeby przy tworzeniu nowej próbki, parametry podstawowe dostawały unikalna wartość dla danego parametru danej próbki i nie robić przy tym nowego rekordu dla tego samego parametru
troche namieszałem, ale jak mogę to zrobić?