В поисках лучшего способа переписать мои грязные коды - PullRequest
0 голосов
/ 02 декабря 2018

Я делаю приложение, используя Rails.У меня есть 4 логических столбца в таблице ниже, и я хочу показать сообщение, если этот столбец истинен.

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_name_A» будет отображаться, если tag_1 является единственным истинным столбцом, и будут отображаться «tag_name_B» и «tag_name_D», если tag_2 иtag_4 оба являются правдой.(Я надеюсь, что проясняю себя.)
Эти коды на самом деле работают нормально, и я уже получаю то, что хочу, но мне просто не нравится, как они написаны.Это выглядит грязно и явно не умно.(Вы можете сказать, что я новичок.) Есть ли лучший способ переписать их?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...