اذهب إلى المحتوى
  • 0

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

Badraoui

السؤال

أقوم ببرمجة تطبيق على إطار العمل 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>

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 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 %>
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...