배경 : 레일 앱에서 feedzirra plugin으로 놀고 있는데, 단일 피드에서 피드와 입구 접근자를 모두 활용하려고합니다. 전망.두 모델을 관련시키고 레일에서 단일 컨트롤러를 사용하여 액세스하기
이렇게하려면 두 가지 모델, feed 및 feed_entry를 만들었습니다. 그들은 다음과 같습니다 :
feed.rb :
class Feed < ActiveRecord::Base
attr_accessible :title, :url, :feed_url, :last_modified, :guid
has_many :feed_entries
def self.update_from_feed(feed_url)
feed = Feedzirra::Feed.fetch_and_parse(feed_url)
add_feed(feed)
FeedEntry.add_entries(feed.entries)
end
private
def self.add_feed(feed)
unless exists? :guid => feed.id
create!(
:title => feed.title,
:url => feed.url,
:feed_url => feed.feed_url,
:last_modified => feed.last_modified,
:guid => feed.id
)
end
end
end
feed_entry.rb :
class FeedEntry < ActiveRecord::Base
attr_accessible :title, :url, :author, :summary, :content, :published, :guid
belongs_to :feed
def self.add_entries(entries)
entries.each do |entry|
unless exists? :guid => entry.id
create!(
:title => entry.title,
:url => entry.url,
:author => entry.author,
:summary => entry.summary,
:content => entry.content,
:published => entry.published,
:guid => entry.id
)
end
end
end
end
의도 cron 작업으로 Feed.update_from_feed (FEED_URL)를 호출하는 것입니다. 실제로, 나는 cron 작업을 여러 피드를 전달하여이 함수를 호출하도록하고 싶습니다. 하지만 먼저 일하는 사람을 얻는다고 생각했습니다. 테스트를 위해 현재 콘솔에서이 함수를 호출하고 있습니다.
질문 : 이것은 매우 간단한 것처럼 보일 수 있습니다
NoMethodError: undefined method `id' for #<Feedzirra::Parser::RSS:0x00000100bcb0f0>
는하지만, update_from_feed 함수를 호출에, 내 콘솔에서 위의 오류가 발생합니다. 루비와 레일에 익숙하지 않은 나는 테이블의 모든 새로운 엔트리가이 시나리오에서 feed.id에 의해 참조 될 수있는 ID가 주어 졌다는 인상을 받았다. 내가 여기서 뭔가를 놓치고 있니?
이 플러그인을 사용하는 좋은 방법은 제 2 모델 방식입니까? 질문 1을 해결할 때까지 나머지 접근 방법을 확인할 수 없으므로 평균 시간 내에 모범 사례에 대한 팁을 요청할 것입니다.
나머지 계획은 플러그인의 피드 및 엔트리 액세서를 단일 컨트롤러 내에서 활용 한 다음 상대 변수보기 내에서 이러한 변수를 어떻게 든 참조하는 것입니다. 이것이 내가 MVC 아키텍처를 인식하고 RESTful 방식으로 사용해야하는 방법입니까? 그렇다면 FeedReader 뷰에서 피드 및 액세스 접근자를 어떻게 참조합니까? 나는이 게시물의 나쁜 있었는지
class FeedEntriesController < ApplicationController def index @feed_entries = FeedEntry.all @feeds = Feed.all end end
하지만 어떤 도움이 정말 감사하겠습니다 :
이 같은 피드 리더 컨트롤러가 보일 것이다 것입니다.
1. 나는 바보 였고 내 피드 마이그레이션을 엉망으로 만든 다음주의를 기울이지 않았다! – anxiety