Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ActiveRecord子类也可以用来保存来自Facebook等其他来源的数据吗?_Ruby On Rails_Ruby_Facebook_Activerecord - Fatal编程技术网

Ruby on rails ActiveRecord子类也可以用来保存来自Facebook等其他来源的数据吗?

Ruby on rails ActiveRecord子类也可以用来保存来自Facebook等其他来源的数据吗?,ruby-on-rails,ruby,facebook,activerecord,Ruby On Rails,Ruby,Facebook,Activerecord,我正在创建一个新的应用程序,允许用户在本地应用程序数据库或直接在Facebook上创建内容 假设用户有一个用于Post的CRUD界面。我已经为Post子类ActiveRecord::Base创建了一个模型。此类的对象具有将帖子保存到本地数据库的方法 不过,用户也可以在我的应用程序中“勾选”并选择“连接到Facebook”。当它被选中时,内容将不会存储在我的本地数据库中,但它将直接进入Facebook Graph API 服务层和控制器层不知道数据的实际去向。至少这是我的想法 我的问题是,我是否可

我正在创建一个新的应用程序,允许用户在本地应用程序数据库或直接在Facebook上创建内容

假设用户有一个用于
Post
的CRUD界面。我已经为
Post
子类
ActiveRecord::Base
创建了一个模型。此类的对象具有将帖子保存到本地数据库的方法

不过,用户也可以在我的应用程序中“勾选”并选择“连接到Facebook”。当它被选中时,内容将不会存储在我的本地数据库中,但它将直接进入Facebook Graph API

服务层和控制器层不知道数据的实际去向。至少这是我的想法

我的问题是,我是否可以对本地数据和Facebook数据使用相同的Post类?当Post对象包含来自Facebook的数据时,Post类中的一些方法就没有意义了;例如
保存
方法


那个设计看起来愚蠢吗?我是否应该创建另一个Post类,它只是一个普通的Ruby类,没有子类
ActiveRecord::Base
?或者还有其他更好的方法吗?

在设计类时,您应该使其尽可能精简。查看它的一个好方法是计算模型中包含的名词和动词。一篇文章可以被保存或删除,但如果你的保存和删除开始有与Facebook相关的逻辑,这是一个很好的迹象,这应该属于一个不同的类别

另一个与Facebook相关的注意事项是:新的指导原则不允许为用户发布“预先编写”的帖子。这意味着,无论哪种方式,你都无法在没有Facebook提示的情况下向用户墙发帖


我认为发布
Post
没有任何问题-这是Rails的标准方式,看起来您应该实现将数据存储到DB的标准方式,并从另一个角度查看Facebook帖子。

在设计类时,您应该尽可能精简它。查看它的一个好方法是计算模型中包含的名词和动词。一篇文章可以被保存或删除,但如果你的保存和删除开始有与Facebook相关的逻辑,这是一个很好的迹象,这应该属于一个不同的类别

另一个与Facebook相关的注意事项是:新的指导原则不允许为用户发布“预先编写”的帖子。这意味着,无论哪种方式,你都无法在没有Facebook提示的情况下向用户墙发帖


我认为发布
Post
没有任何问题-这是Rails的标准方式,看起来您应该实现将数据存储到数据库的标准方式,并从另一个角度查看Facebook帖子。

这种方法存在一些明确的问题-第一个问题是,您最终会失败与Facebook API紧密耦合。由于FB API在没有任何警告的情况下进行更改,或者没有按照文件记录的方式工作,我感到非常悲痛

另一个问题是性能-从FB加载数据通常非常慢,甚至比从DB跨线读取数据还要慢。它也容易引起愤怒(至少在我的经验中是这样)


我肯定会使用“代理对象”,它们存储在您的数据库中,并定期从Facebook获取水分

这种方法存在一些明确的问题——首先,你最终会与Facebook API紧密耦合。由于FB API在没有任何警告的情况下进行更改,或者没有按照文件记录的方式工作,我感到非常悲痛

另一个问题是性能-从FB加载数据通常非常慢,甚至比从DB跨线读取数据还要慢。它也容易引起愤怒(至少在我的经验中是这样)


我肯定会使用“代理对象”,它们存储在您的数据库中,并定期从Facebook获取水分

谢谢,不知道它是否回答了我所有的问题。想象一下:但是如果您要在GUI中显示一个列表,该列表将显示所有
页面
对象。然后在我的应用程序中,数据将位于页面对象中。所以你是说我不应该用Facebook数据填充页面对象(它继承自活动记录)。你有其他选择吗?我肯定取决于应用程序-如果它是一个显示facebook页面指标的应用程序,我肯定会直接使用来自facebook的数据。如果像你的情况一样,用户选择在Facebook上分享他们在你的应用程序上生成的任何内容,我会使用一个实际的DB来存储对象,即使它们被发布到FB上。然后,当记录实际显示时,我会用注释等异步更新记录。谢谢,不确定它是否回答了我所有的问题。想象一下:但是如果您要在GUI中显示一个列表,该列表将显示所有
页面
对象。然后在我的应用程序中,数据将位于页面对象中。所以你是说我不应该用Facebook数据填充页面对象(它继承自活动记录)。你有其他选择吗?我肯定取决于应用程序-如果它是一个显示facebook页面指标的应用程序,我肯定会直接使用来自facebook的数据。如果像你的情况一样,用户选择在Facebook上分享他们在你的应用程序上生成的任何内容,我会使用一个实际的DB来存储对象,即使它们被发布到FB上。然后,当记录实际显示时,我会用注释等异步更新记录。谢谢,不确定它是否回答了我所有的问题。想象一下:但是如果您要在GUI中显示一个列表,该列表将显示所有
页面
对象。然后在我的应用程序中,数据将位于页面对象中。所以你是说我不应该用Facebook数据填充页面对象(它继承自活动记录)。你有别的选择吗?我确定