attr_accessible
আমার মডেলের মধ্যে আর কাজ করবে না বলে মনে হচ্ছে।
4 রেলগুলিতে ভর অ্যাসাইনমেন্টের অনুমতি দেওয়ার উপায় কী?
attr_accessible
আমার মডেলের মধ্যে আর কাজ করবে না বলে মনে হচ্ছে।
4 রেলগুলিতে ভর অ্যাসাইনমেন্টের অনুমতি দেওয়ার উপায় কী?
উত্তর:
রেল 4 এখন শক্তিশালী পরামিতি ব্যবহার করে ।
রক্ষা বৈশিষ্ট্যগুলি এখন নিয়ামক মধ্যে সম্পন্ন হয়। এটি একটি উদাহরণ:
class PeopleController < ApplicationController
def create
Person.create(person_params)
end
private
def person_params
params.require(:person).permit(:name, :age)
end
end
attr_accessible
মডেলটিতে আর সেট করার দরকার নেই।
accepts_nested_attributes_for
accepts_nested_attribute_for
শক্তিশালী পরামিতিগুলির সাথে ব্যবহার করার জন্য , আপনাকে কোন নেস্টেড বৈশিষ্ট্যগুলি শ্বেত তালিকাভুক্ত করা উচিত তা নির্দিষ্ট করতে হবে।
class Person
has_many :pets
accepts_nested_attributes_for :pets
end
class PeopleController < ApplicationController
def create
Person.create(person_params)
end
# ...
private
def person_params
params.require(:person).permit(:name, :age, pets_attributes: [:name, :category])
end
end
কীওয়ার্ডগুলি স্ব-বর্ণনামূলক, তবে কেবলমাত্র ক্ষেত্রেই, আপনি রেল অ্যাকশন কন্ট্রোলার গাইডটিতে শক্তিশালী পরামিতিগুলি সম্পর্কে আরও তথ্য পেতে পারেন ।
দ্রষ্টব্য : আপনি যদি এখনও ব্যবহার করতে চান তবে আপনার নিজেরটি attr_accessible
যুক্ত protected_attributes
করতে হবে Gemfile
। অন্যথায়, আপনি একটি মুখোমুখি হবে RuntimeError
।
RuntimeError in MicropostsController#index 'attr_accessible' is extracted out of Rails into a gem. Please use new recommended protection model for params(strong_parameters) or add 'protected_attributes' to your Gemfile to use old one.
আপনি যদি অ্যাট্রি_ অ্যাক্সেসেবল পছন্দ করেন তবে আপনি এটি 4 রেলগুলিতেও ব্যবহার করতে পারেন। আপনার এটি রত্নের মতো ইনস্টল করা উচিত:
gem 'protected_attributes'
এর পরে আপনি আপনার কাছে রেল 3 এর মতো মডেলগুলিতে অ্যাট্রি_অ্যাক্সেসযোগ্য ব্যবহার করতে পারেন
এছাড়াও, এবং আমি মনে করি যে এটি সবচেয়ে ভাল উপায় - ভর কার্যকারিতা নিয়ে কাজ করার জন্য ফর্ম অবজেক্টগুলি ব্যবহার করা এবং নেস্টেড অবজেক্টগুলি সংরক্ষণ করা এবং আপনি সেভাবে সুরক্ষিত_অযুক্তি রত্নও ব্যবহার করতে পারেন
class NestedForm
include ActiveModel::MassAssignmentSecurity
attr_accessible :name,
:telephone, as: :create_params
def create_objects(params)
SomeModel.new(sanitized_params(params, :create_params))
end
end
আমরা ব্যবহার করতে পারি
params.require(:person).permit(:name, :age)
যেখানে ব্যক্তি মডেল, আপনি কোনও পদ্ধতিতে এই কোডটি পাস করতে পারেন person_params এবং প্যারামের জায়গায় ব্যবহার করতে পারেন [: ব্যক্তি] তৈরি পদ্ধতিতে বা অন্য পদ্ধতিতে
5 রেলগুলির জন্য একটি আপডেট:
gem 'protected_attributes'
আর কাজ করবে বলে মনে হচ্ছে না। তবে দিন:
রত্ন
একটি চেষ্টা.
1) ডিভাইসটি আপডেট করুন যাতে এটি আপনার অ্যাপ্লিকেশনটির জেমফাইলে এই লাইনটি যুক্ত করে রেলস 4.0 পরিচালনা করতে পারে:
gem 'devise', '3.0.0.rc'
তারপরে কার্যকর করুন:
$ bundle
2) attr_accessible
আবার রেলের পুরানো কার্যকারিতা যুক্ত করুন 4.0
ব্যবহার করার চেষ্টা করুন attr_accessible
এবং এ সম্পর্কে মন্তব্য করবেন না।
আপনার আবেদনের জেমফাইলে এই লাইনটি যুক্ত করুন:
gem 'protected_attributes'
তারপরে কার্যকর করুন:
$ bundle
attr_accessible
এটি অপসারণ করা দরকার। আমরা তা রাখলে কী হবে?