【问题标题】:Nested attributes with acceptance radio buttons带有接受单选按钮的嵌套属性
【发布时间】:2018-08-24 16:37:20
【问题描述】:

我有下一个模型:

class Student < ApplicationRecord
    has_many :special_offers_participants
end

class SpecialOffersParticipant < ApplicationRecord
    belongs_to :special_offer
    belongs_to :student
end

class SpecialOffer < ApplicationRecord
    has_many :special_offers_participants
end

我需要为学生创建注册表单,根据会话属性将有接受特别优惠或拒绝单选按钮,或者没有(会话可以有 special_offer_id)。很明显,我可以使用嵌套的表单属性来完成此操作,但表单应该有一个问题:Do you accept special offer 和单选按钮:Yes/No。除此之外,这个问题的答案应该是必需的。

你能给我提供完成解决方案的任何方向吗?

【问题讨论】:

    标签: ruby-on-rails accepts-nested-attributes


    【解决方案1】:
    class Student < ApplicationRecord
        has_many :offers
        has_many :promotions, through: :offers
    end
    
    class Offer < ApplicationRecord
        belongs_to :student
        belongs_to :promotion
    end
    
    class Promotion < ApplicationRecord
    end 
    

    【讨论】:

    • 向学生提供了一些特别优惠(例如,通过考试获得奖励等),这些优惠是相同的。所以我需要一个数据透视表来了解哪些优惠适用于学生
    • @OlegBoris 好的..我仍然没有清晰的图片...但我注意到您的SpecialOffersParticipant 只是StudentSpecialOffer 之间的连接表。我们仅使用带有 has_and_belongs_to_many 关联的连接表,而替代方法是 has_many 通过另一个 has_many 关联另外我会避免使用那些长类名,因为它们使整个概念更加复杂我更新了我的答案,但仍然可能不是什么你正在寻找......因为我没有明确的想法
    • 特别优惠参与者实际上包含在模块中。我在这里做了简化。实际上它被命名为SpecialOffers::Participant。我正在创建的系统非常棘手。用户的登陆页面以拆分 gem 显示,因此他们可以获得不同的登陆。他们在那里获得会话变量,将 special_offer.id 放入用户的会话中。在注册页面上,他们根据会话获得特别优惠字段。问题是他们必须通过选择单选按钮来表达他们参与特别优惠的愿望,这应该是必填字段
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多