Rails建模管理员控制的字段

时间:2015-04-10 18:21:47

标签: ruby-on-rails

我在"帖子中有10个下拉字段"我希望由admin用户控制的表单。

目前,我有另一个名为" post fields"

的模型
class PostField
  include Mongoid::Document
  field :family, type: String
  field :project, type: String
  field :event, type: String
  field :testmode, type: String
  field :location, type: String
end

然后我使用这些文档填充新帖子的每个下拉列表。

我有2个dellimas:

1)如果管理员为一个下拉列表添加PostField文档,则会创建一个完整的文档。不是最有效的,但我可以解决这个问题。 2)如果管理员更改了字段的名称,则所有关联的帖子都不匹配。

这实际上是一种标记模型,但实施起来很差,我不知道该怎么做。

即,我希望有一个受控制的地点列表:["楼上","楼下","浴室"]所以用户不能只需使用文字输入并说出"洗手间"代替。但如果管理员想要改变"浴室"到"洗手间",我希望相应的帖子更新。

希望这不是太复杂。

2 个答案:

答案 0 :(得分:3)

所以你希望每个PostField都属于某种类型或位置?所以你想限制进入的位置:位置?

你需要做的是创建另一个名为locations的模型和表,它将包含一个位置列表,如Upstairs,Downstairs,Bathroom等。它有id和id,以及一个名字。在PostField中,您将使用has_one :location加入位置,数据库表将具有location_id。然后管理员可以将Location.name更改为他们想要的任何内容,而所有PostField都将显示更新的标签。在视图中,使用postField.location.name显示该字段的标签。

答案 1 :(得分:0)

不确定要理解你想做什么。

使用此架构,您应该能够创建一个"帖子"使用静态字段和动态字段。

simple schema

<强> PostField

  • &#34;排序&#34;字段用于相对于彼此对帖子字段进行排序。
  • &#34;代码&#34;字段将包含用于标识帖子字段的代码。一旦创建,它应该是静态的。
  • 如果你想让它变得动态,你应该添加一个字段&#34; label&#34;所以管理员可以添加新的帖子

<强> PostFieldValue

  • &#34;排序&#34;字段用于相互对值进行排序。
  • &#34;标签&#34;字段在你的例子中[&#34; Upstairs&#34;,&#34;楼下#34;,&#34;浴室&#34;]

在模型中

您应该创建一个方法来根据帖子的字段获取值。

<强>改进

  • 您可以通过添加&#34; isdefault&#34;来改进架构。字段值,以便管理员可以在下拉列表中强制使用默认值。
  • 您可以根据需要对帖子字段进行分类