Điều này đã được đăng chéo tới ruby-talk.
ActiveRecord là một lớp nói chuyện với cơ sở dữ liệu, đá quý này được mong đợi sẽ được chạy trong một bối cảnh với kết nối cơ sở dữ liệu với ActiveRecord được tải. Nếu bạn đang ở trong Rails, điều đó có nghĩa là tải môi trường Rails của bạn. Hoặc nếu chỉ ActiveRecord, một cái gì đó như thế này sẽ làm việc:
require 'active_record'
require 'circle'
ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: ':memory:'
ActiveRecord::Schema.define do
self.verbose = false
create_table :users do |t|
t.string :name
t.integer :friends_count, :default => 0, :null => false
end
create_table :friendships, :force => true do |t|
t.references :user, :friend
t.datetime :requested_at, :accepted_at, :denied_at, :blocked_at
t.string :status
t.timestamps
end
create_table :blocked_users, :force => true do |t|
t.references :user, :blocked_user
t.timestamps
end
change_table :friendships do |t|
t.index :user_id
t.index :friend_id
t.index :status
end
change_table :blocked_users do |t|
t.index :user_id
t.index :blocked_user_id
end
end
class User < ActiveRecord::Base
has_circle
end
john = User.create! name: 'john'
mary = User.create! name: 'mary'
paul = User.create! name: 'paul'
john.befriend(mary)
john.friends?(mary) # => false
mary.accept_friend_request(john)
mary.friends?(john) # => true
Nhưng thành thật mà nói, nếu bạn không biết những gì ActiveRecord là, sau đó có vẻ như không thể xảy ra rằng đá quý này sẽ được giải quyết vấn đề cho bạn. Ngoài ra, tôi muốn được một chút hoài nghi của đá quý này, nó có một misspelling in its migration sao cho nó không thực sự làm việc trừ khi bạn đi sửa chữa nó. Điều này đã bị hỏng trong ít nhất 7 tháng mà không được sửa chữa. Có < 800 lượt tải xuống của đá quý, không nhiều (ít người dùng = ít người tìm và sửa lỗi) và dường như tác giả không có ý định duy trì nó.
Được rồi, tôi vừa nhận ra điều thực sự xảy ra. Mất khoảng 20 phút để viết lên trên, và nó có thể giúp một người nào đó sau đó googling cho một vấn đề, vì vậy tôi sẽ rời khỏi nó. Điều thực sự xảy ra, Tôi nghi ngờ, là bạn có một viên ngọc trên hệ thống của bạn có tên là vòng tròn, và bạn có một tập tin có thể trong cùng một thư mục có tên là vòng tròn. Đường dẫn tải của bạn không được thiết lập đúng cách, vì vậy khi bạn require 'circle'
, nó đang tìm kiếm đá quý chứ không phải tệp bạn đã viết. Một câu trả lời đơn giản là để nói require File.dirname(__FILE__) + '/circle'
thay vì require 'circle'
Đây không thực sự là câu trả lời đúng, nhưng nó sẽ hoạt động mà không đi vào vô số các sắc thái cần thiết để tìm ra điều đúng là gì. Nếu bạn muốn tìm ra điều đúng, tôi cần biết bạn đang sử dụng phiên bản Ruby nào, bạn định sử dụng và gọi mã này như thế nào, và cấu trúc thư mục của bạn trông như thế nào.
Ngoài ra. Nếu bạn đã nói rằng circle.rb là một tập tin trong cùng một thư mục, sau đó tôi sẽ không mất 20 phút với câu trả lời hàng đầu. Bạn nên cung cấp đầy đủ ngữ cảnh trong tương lai để hiểu vấn đề.
Bạn có chắc bạn' đã cài đặt đá quý? 'gem install circle' sẽ có tất cả các phụ thuộc được cài đặt. –