寻找一种更好的方式来重写我的混乱代码

时间:2018-12-02 02:01:10

标签: ruby-on-rails-5

我正在使用Rails开发应用程序。我在下面的表格中有4个布尔列,如果该列为true,我想显示一条消息。

class CreatePosts < ActiveRecord::Migration[5.2]
  def change
    create_table :posts do |t|
      t.integer :user_id, null: false, default: 0
      t.string :title, null: false, default: ''
      t.text :description, null: true
      t.boolean :tag_1, null: false, default: false
      t.boolean :tag_2, null: false, default: false
      t.boolean :tag_3, null: false, default: false
      t.boolean :tag_4, null: false, default: false

      t.timestamps
    end
  end


posts_controller.rb

def index
  @posts = Post.all
end


index.html.erb

<% @posts.each do |post| %>
  <ul>
    <% if post.tag_1 %>
      <li><%= 'tag_name_A' %></li>
    <% end %>
    <% if post.tag_2 %>
      <li><%= 'tag_name_B' %></li>
    <% end %>
    <% if post.tag_3 %>
      <li><%= 'tag_name_C' %></li>
    <% end %>
    <% if post.tag_4 %>
      <li><%= 'tag_name_D' %></li>
    <% end %>
    <% if !post.tag_1 && !post.tag_2 && !post.tag_3 && !post.tag_4 %>
      <li>none</li>
    <% end %>
  </ul>
<% end %>

因此,如果tag_1是唯一的真实列,则将显示'tag_name_A';如果tag_2tag_4都为true,则将显示'tag_name_B'和'tag_name_D' 。 (希望我能说清楚。)
这些代码实际上运行良好,我已经得到了想要的东西,但是我只是不喜欢它们的编写方式。它看起来很凌乱,而且显然不明智。 (您可以说我是新手。)是否有更好的方法重写它们?

0 个答案:

没有答案