through references rails has_one has_many has_and_belongs_to_many example ruby-on-rails ruby-on-rails-3 model associations model-associations

ruby-on-rails - has_one - rails references



cómo implementar la funcionalidad jobpost que tiene 3 categorías definidas (2)

Lo que quiero hacer es crear un modelo de ubicación que se utilizará para publicar trabajos para 3 categorías fijas, es decir, pasantía, empresa y autónomo. Habrá un menú de ubicación que tendrá 3 menues como pasantía, corporativo y autónomo, y se basará en la selección del usuario. , para estas 3 categorías se mostrará el mismo formulario de publicación de trabajo para crear puestos de trabajo. Mientras se muestra jobposts, la vista diferente se mostrará según la categoría.

No entiendo cómo debo implementar esto. Si debo crear una ubicación y categorías como un modelo diferente y asignar una asociación como tiene muchas categorías en ubicación y pertenece a la categoría, pero si lo hago, en el modelo de categorías tengo 3 opciones fijas y no voy a aceptar esa opción del usuario, entonces, ¿cómo puedo agregar estas 3 opciones en el modelo que se va a arreglar y agregar puestos de trabajo para ellas por categoría?

¿Cómo puedo implementar esta colocación?


Es simple que puedes lograr de varias maneras una forma es crear job_type que tiene una de 3 categorías y dar dropdown mientras creas una publicación de trabajo.

Para que sea fácil de encontrar cree alcance para 3 categorías como

scope :freelance,where("job_type = ?",''freelance'') ....

JobPost.freelance ofrece un puesto de trabajo independiente.


Defina los modelos como

Class Jobpost belongs_to :resource, :polymorphic => true, :dependent => :destroy accepts_nested_attributes_for :resource def resource_attributes=(params = {}) self.resource = spec_type.constantize.new unless self.resource self.resource.attributes = params.select{|k| self.resource.attribute_names.include?(k) || self.resource.class::ACCESSOR.include?(k.to_sym)} end end class Freelancer has_one :jobpost, :as => :resource end

Agregue campos a Jobpost como para crear campos (resource_id: integer, resource_type: string)

#jobposts table t.references :resource, :polymorphic => true

La vista como

= form_for(@jobpost, :url => jobposts_path, :method => :post) do |f| = fields of Jobpost = f.fields_for :resource, build_resource(''freelancer'') do |freelancer| = fields of Freelancer

El ayudante Jobpost como

module JobpostsHelper def build_resource(klass) klass = "{klass.capitalize}" object = eval("#{klass}.new") if @jobpost.resource.class.name == klass object = @jobpost.resource end return object end end

Use javascript para mostrar los campos de la subcategoría (freelance, etc.) cuando se hace clic en el enlace de Freelancer. cuando se envía el formulario, se envían todos los campos para todas las subcategorías, pero se filtran en el método ''resource_attributes =''.