আমার মনে হয় আমি পিএইচপি সমান print_r()
(মানব-পঠনযোগ্য মুদ্রণযোগ্য) পাওয়ার চেষ্টা করছি ; বর্তমানে কাঁচা আউটপুটটি হ'ল:
ActiveRecord::Relation:0x10355d1c0
আমার কি করা উচিৎ?
আমার মনে হয় আমি পিএইচপি সমান print_r()
(মানব-পঠনযোগ্য মুদ্রণযোগ্য) পাওয়ার চেষ্টা করছি ; বর্তমানে কাঁচা আউটপুটটি হ'ল:
ActiveRecord::Relation:0x10355d1c0
আমার কি করা উচিৎ?
উত্তর:
আমি সাধারণত প্রথমে চেষ্টা করি .inspect
, যদি তা আমাকে যা চায় তা না দেয়, আমি স্যুইচ করব .to_yaml
।
class User
attr_accessor :name, :age
end
user = User.new
user.name = "John Smith"
user.age = 30
puts user.inspect
#=> #<User:0x423270c @name="John Smith", @age=30>
puts user.to_yaml
#=> --- !ruby/object:User
#=> age: 30
#=> name: John Smith
আশা করি এইটি কাজ করবে.
y record_name.attributes
। #y
জন্য একটি উপনাম to_yaml
।
আপনার মডেলটিতে to_s পদ্ধতিটি সংজ্ঞায়িত করুন। উদাহরণ স্বরূপ
class Person < ActiveRecord::Base
def to_s
"Name:#{self.name} Age:#{self.age} Weight: #{self.weight}"
end
end
তারপরে আপনি যখন এটি # মুখ্যগুলি দিয়ে মুদ্রণ করতে যান তখন সেই স্ট্রিংটি সেই পরিবর্তনশীলগুলির সাথে প্রদর্শিত হবে।
puts my_model_instance
কল করবে না to_s
। আপনাকে স্পষ্টভাবে এটি করতে হবে:puts my_model_instance.to_s
কারাগারে আপনি ' ডিবেগ হেল্পার অ্যাকশনভিউ :: সহায়ক' :: ডিবাগহেল্পার ব্যবহার করে ভিউতে ফলাফল মুদ্রণ করতে পারেন
#app/view/controllers/post_controller.rb
def index
@posts = Post.all
end
#app/view/posts/index.html.erb
<%= debug(@posts) %>
#start your server
rails -s
ফলাফল (ব্রাউজারে)
- !ruby/object:Post
raw_attributes:
id: 2
title: My Second Post
body: Welcome! This is another example post
published_at: '2015-10-19 23:00:43.469520'
created_at: '2015-10-20 00:00:43.470739'
updated_at: '2015-10-20 00:00:43.470739'
attributes: !ruby/object:ActiveRecord::AttributeSet
attributes: !ruby/object:ActiveRecord::LazyAttributeHash
types: &5
id: &2 !ruby/object:ActiveRecord::Type::Integer
precision:
scale:
limit:
range: !ruby/range
begin: -2147483648
end: 2147483648
excl: true
title: &3 !ruby/object:ActiveRecord::Type::String
precision:
scale:
limit:
body: &4 !ruby/object:ActiveRecord::Type::Text
precision:
scale:
limit:
published_at: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter
subtype: &1 !ruby/object:ActiveRecord::Type::DateTime
precision:
scale:
limit:
created_at: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter
subtype: *1
updated_at: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter
subtype: *1
.inspect
আপনি যা সন্ধান করছেন, এটি আইএমওর চেয়ে সহজতর উপায় .to_yaml
!
user = User.new
user.name = "will"
user.email = "will@example.com"
user.inspect
#<name: "will", email: "will@example.com">
পিপিও কাজটি করে, কোনও রত্নের প্রয়োজন হয় না।
@a = Accrual.first ; pp @a
#<Accrual:0x007ff521e5ba50
id: 4,
year: 2018,
Jan: #<BigDecimal:7ff521e58f08,'0.11E2',9(27)>,
Feb: #<BigDecimal:7ff521e585d0,'0.88E2',9(27)>,
Mar: #<BigDecimal:7ff521e58030,'0.0',9(27)>,
Apr: #<BigDecimal:7ff521e53698,'0.88E2',9(27)>,
May: #<BigDecimal:7ff521e52fb8,'0.8E1',9(27)>,
June: #<BigDecimal:7ff521e52900,'0.8E1',9(27)>,
July: #<BigDecimal:7ff521e51ff0,'0.8E1',9(27)>,
Aug: #<BigDecimal:7ff521e51bb8,'0.88E2',9(27)>,
Sep: #<BigDecimal:7ff521e512f8,'0.88E2',9(27)>,
Oct: #<BigDecimal:7ff521e506c8,'0.0',9(27)>,
Nov: #<BigDecimal:7ff521e43d38,'0.888E3',9(27)>,
Dec: #<BigDecimal:7ff521e43478,'0.0',9(27)>,
আপনি কোনও বস্তুর দুটি উদাহরণও মুদ্রণ করতে পারেন:
pp( Accrual.first , Accrual.second)
`
`
`
inspect
দুর্দান্ত তবে কখনও কখনও যথেষ্ট পরিমাণে ভাল হয় না। যেমন BigDecimal
ভালো ছাপে: #<BigDecimal:7ff49f5478b0,'0.1E2',9(18)>
।
কী মুদ্রিত হয়েছে তার পুরো নিয়ন্ত্রণ রাখতে আপনি পুনরায় সংজ্ঞা দিতে to_s
বা inspect
পদ্ধতিগুলি করতে পারেন । বা ভবিষ্যত ডেভসকে খুব বেশি বিভ্রান্ত না করার জন্য নিজের একটি তৈরি করুন।
class Something < ApplicationRecord
def to_s
attributes.map{ |k, v| { k => v.to_s } }.inject(:merge)
end
end
এটি to_s
সমস্ত বৈশিষ্ট্যের ক্ষেত্রে একটি পদ্ধতি প্রয়োগ করবে (অর্থাত্ )। এই উদাহরণটি কুৎসিত থেকে মুক্তি পাবে BigDecimals
।
আপনি কেবল কয়েকটি মুখ্য গুণকে পুনরায় সংজ্ঞা দিতে পারেন:
def to_s
attributes.merge({ my_attribute: my_attribute.to_s })
end
আপনি দুটি বা কোনওভাবে সংযুক্তিগুলির মিশ্রণ তৈরি করতে পারেন ।
আপনার ব্যবহার করা দরকার debug(@var)
। এটি হ'ল "মুদ্রণ_আর" এর মতো।