In my rails app I have 2 models: post and post_translations.
class PostTranslation < ActiveRecord::Base
belongs_to :post
LANGUAGES = %w( en fr es de it )
validates_inclusion_of :language, :in => LANGUAGES
end
class Post < ActiveRecord::Base
has_many :post_translations
end
I want to prevent the same language translation from being submitted twice, so I want to limit the enums to the values not listed in the language column of a particular post_id.
I don’t know if I should do this in model, controller or helper.
Which is the best practice?
Thanks in advance.
I’d use an attribute on the class instead of defining it on an instance.
Now to fulfill your requirement of showing only the languages without translations, define a method on Post:
Then you can build a select menu by getting a post (
@post = Post.find(params[:id]) and populating the collection from@post.untranslated.