• 0

كيف أغيّر بيانات جدول على Rails مرتبط بجدول آخر ؟

أقوم ببرمجة تطبيق على إطار العمل Rails، يقوم على :

وجود مستخدم ،جدول تقويم 'Calendar' و جدول لربط المستخدم بتقويم معين يمسى role.

عند إنشاء المستخدم لتقويم معين يسجل هذا في جدول role ويأخذ قيم تعريف كل من المستخدم والتقويم : user_id،calendar_id.

الكود التالي يقرّب إليكم الصورة أكثر :

class User < ActiveRecord::Base
  has_many :administrations
  has_many :calendars, through: :administrations
end

class Calendar < ActiveRecord::Base
  has_many :administrations
  has_many :users, through: :administrations
  has_many :posts
end

class Administration < ActiveRecord::Base
  belongs_to :user
  belongs_to :calendar
end

 

وهذا جدول في واجهة المستخدمين المرتبطين بتقويم :

<table id="manage_users">

  <tr>
    <th><span class="glyphicon glyphicon-user" aria-hidden="true"></span> NAME</th>
    <th><span class="glyphicon glyphicon-filter" aria-hidden="true"></span> ROLE</th>
    <th><span class="glyphicon glyphicon-time" aria-hidden="true"></span> JOINED</th>
    <th><span class="glyphicon glyphicon-cog" aria-hidden="true"></span> OPTIONS</th>
  </tr>

  <% @calendar.users.each do |user| %>

    <tr>
      <% if user.id == current_user.id %>
        <td>You</td>
        <td><%= user.administrations.find_by_calendar_id(@calendar.id).role %></td>
        <td><%= user.administrations.find_by_calendar_id(@calendar.id).created_at.strftime("%B %d, %Y") %>
        </td>
      <% else %>
        <td><%= user.first_name %> <%= user.last_name %></td>
        <td><span class="glyphicon glyphicon-user" aria-hidden="true"></span> <%= user.administrations.find_by_calendar_id(@calendar.id).role %>
        </td>
        <td><%= user.administrations.find_by_calendar_id(@calendar.id).created_at.strftime("%B %d, %Y") %>
        </td>
        <% unless user.id == user.administrations.find_by_calendar_id(@calendar.id).role %>
          <td><span class="glyphicon glyphicon-tasks" aria-hidden="true"></span> Edit Role</td>
        <% end %>
      <% end %>
    </tr>

  <% end %>

</table>

ما أريد السؤال عنه الآن كيفية التغيير في تقويم معين؟ ما الطريقة المثلى لفعل ذلك، مرفوقة بنصائح؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

أضف الوظيفة التالية إلى ملف user.rb :

def update_role(role)
  self.update_attributes(:role, role)
end

ثم في ملف المتحكم  users_controller.rb :

class UsersController << ApplicationController
  def update_role
    @user = User.find(params[:id])
    @user.update_role(params[:role)
  end
end

وملف المسار route.rb :

get "user/role/update" => "user#update_role"

أضف وسم radiobutton إلى واجهة تحديث المستخدم :

<%= form_tag (url: "user/role/update" id: user.id), remote: true do %>

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن